<?php


include_once ENTITIES."cidade.php";
include_once ENTITIES."estado.php";
include_once ENTITIES."regiao.php";

include_once MODELS."estado.php";
include_once MODELS."cidade.php";
include_once MODELS."regiao.php";

class RegiaoController {
	
    private $modelEstado;
    private $modelCidade;
    private $modelRegiao;

    public function __construct() {
        $this->modelEstado = new EstadoModel();	
        $this->modelCidade = new CidadeModel();	
        $this->modelRegiao = new RegiaoModel();
    }

    public function addRegiao($regiao = null){
        if(is_null($regiao)) {
            $regiao = new Regiao();
            $this->linkRegiao($regiao);
        }
        global $config;
        $hasId = $config->filter("for-update-id");
        $res = false; $res_pos = false;
        if(!empty($hasId)){
            $regiao->id = $hasId;
            $res = $this->modelRegiao->update($regiao);
        } else {
            $res = $this->modelRegiao->insert($regiao);
        }
        
        if($res){
            $config->successInFunction();
        } else if(!$res_pos){
            $config->failInFunction($this->modelRegiao->handleError());                
        }
        $config->redirect("index.php?op=cad-regi");
    }
    
    private function linkRegiao(Regiao &$regiao){
        global $config;
        $regiao->nome = mb_strtoupper($config->filter("nome"), 'UTF-8');
        $regiao->cobrador = (int) $config->filter("cobrador");
        $regiao->loja = (int) $config->filter("loja");
    }
    
    public function removerRegiao(){
        global $config;
        
        $regiao_id = $config->filter("regi");
        
        $condition = RegiaoModel::ID." = ". $regiao_id;
        $res = $this->modelRegiao->delete($condition);
        if($res){
            $config->successInFunction();
        } else {
            $config->failInFunction($this->modelRegiao->handleError());
        }
        $config->redirect("index.php?op=cad-regi");
    }

    
    public function getEstadoOfCidade($idcidade){
        $res = $this->modelCidade->select(CidadeModel::ESTADO, CidadeModel::ID." = ".$idcidade);
        if(count($res))
            return $res[0]->estado;
        return "";
    }
    
    public function getRegiao($regiao_id, $foreign_values = false){
        if($foreign_values)
            $regiao = $this->modelRegiao->superSelect(RegiaoModel::TABLE.".".RegiaoModel::ID." = ".$regiao_id);
        else
            $regiao = $this->modelRegiao->select("*", RegiaoModel::TABLE.".".RegiaoModel::ID." = ".$regiao_id);
        
        if(count($regiao)) return $regiao[0];
        return new Regiao();
    }
    
    public function getAllRegioes($foreign_values = false, $byLoja = false){
        $condition = null;
        if($byLoja){
            $condition = RegiaoModel::TABLE.".".RegiaoModel::LOJA." = $byLoja";
        }
        if($foreign_values){
            return $this->modelRegiao->superSelect($condition);
        }
        return $this->modelRegiao->select("*", $condition);
    }
    
    public function getRegioesByCobrador($idCobrador){
        $condition = RegiaoModel::COBRADOR." = $idCobrador";
        return $this->modelRegiao->select("*", $condition);
    }
    
    public function getEstados(){
        return $this->modelEstado->select(array(EstadoModel::SIGLA, EstadoModel::ID));	
    }	
    public function getEstado($id_estado){
        $condition = EstadoModel::ID." = $id_estado";
        $estado = $this->modelEstado->select("*", $condition);
        return empty($estado)? new Estado(): $estado[0];
    }

    public function getCidadesByEstado($idestado){
        return $this->modelCidade->select("*", CidadeModel::ESTADO . " = " . $idestado);
    }
    
    public function getCidade($idCidade){
        $cidade = $this->modelCidade->select("*", CidadeModel::ID." = $idCidade");
        if(!empty($cidade)) return $cidade[0];
        return new Cidade();
    }
    
}
?>
